package com.sir.tao.carhire.shiro;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;

import java.util.Date;

/**
 * @author dyy
 * @data 2021/12/6 11:26
 * @description: jwt
 */
public class JwtUtil {
    /**
     *定义token过期时间
     */
    public  static  final  long  EXPIRE_TIME = 5*60*1000;


    /**
     * Description :生成签名，5Min后过期
     * @parm username 用户名
     * @parm secret 用户的密码
     * @return 加密的token
     */
    public  static  String  sign(String username , String secret){
        Date date = new Date(System.currentTimeMillis()+EXPIRE_TIME);
        Algorithm algorithm = Algorithm.HMAC256(secret);
        return JWT.create().withClaim("username",username).withExpiresAt(date).sign(algorithm);
    }

    /**
     * Description : 获得token中的信息，无需secret解密也能获得
     * @parm token
     * @return token中包含的用户名
     */
    public  static  String  getUserName (String token){
        DecodedJWT jwt = JWT.decode(token);
        return  jwt.getClaim("username").asString();
    }
}
